/***
 * https://www.jianshu.com/p/1f1049d0a0f4 访问者模式
 *
 * CTO、CEO 对员工考核
 *
 * CTO 考核目标代码行数
 * CEO 考核KPI
 *
 * Visor： 接口
 *
 * Element: 接口
 *
 *

 访问者模式的优点。
 各角色职责分离，符合单一职责原则
 通过UML类图和上面的示例可以看出来，Visitor、ConcreteVisitor、Element 、ObjectStructure，职责单一，各司其责。
 具有优秀的扩展性
 如果需要增加新的访问者，增加实现类 ConcreteVisitor 就可以快速扩展。
 使得数据结构和作用于结构上的操作解耦，使得操作集合可以独立变化
 员工属性（数据结构）和CEO、CTO访问者（数据操作）的解耦。
 灵活性

 访问者模式的缺点。
 具体元素对访问者公布细节，违反了迪米特原则
 CEO、CTO需要调用具体员工的方法。
 具体元素变更时导致修改成本大
 变更员工属性时，多个访问者都要修改。
 违反了依赖倒置原则，为了达到“区别对待”而依赖了具体类，没有以来抽象
 访问者 visit 方法中，依赖了具体员工的具体方法。


 1.假设新增一个 主管人员，关注代码 数量，产品数量 kpi

 2.增加员工方法，，，，不科学
 */
package com.lz.behavior.vistor;